package com.basker.pisces.concurrent.counter;

/**
 * 计数器接口，确保单点和集群环境下的线程安全
 *
 * @author hangwen
 */
public interface ICounter {

    /**
     * 自减-1后返回当前值
     *
     * @return
     */
    int decrementAndGet();

    /**
     * 获取当前值
     *
     * @return
     */
    int get();

    /**
     * 返回当前值后自减-1
     *
     * @return
     */
    int getAndDecrement();

    /**
     * 返回当前值后自增+1
     *
     * @return
     */
    int getAndIncrement();

    /**
     * 唯一标识
     *
     * @return
     */
    String getKey();

    /**
     * 自增+1后返回当前值
     *
     * @return
     */
    int incrementAndGet();

    /**
     * 设置当前值
     *
     * @param value
     */
    void set(int value);
}
